import { reqGetSearchList } from '@/api/index'
const state = {
    searchList: {}
}
const mutations = {
    updateSearchList(state, newValue) {
        state.searchList = newValue
    }
}
const actions = {
    async setSearchList(context, searchParams) {
     
        const res = await reqGetSearchList(searchParams)
        let data = res.data.data

        // 初始商品列表（从服务端拿到的完整商品列表）
        let filteredGoods = data.goodsList

        // 分类过滤（按优先级从三级到一级）
        // 根据分类ID优先级过滤
        if (searchParams.category3Id) {
            // 1. 先过滤出符合三级分类的商品 把商品的三级分类和传入的路由参数做对比来渲染
            filteredGoods = data.goodsList.filter(item => item.category3Id == searchParams.category3Id);
        } else if (searchParams.category2Id) {
            // 1. 先过滤出符合二级分类的商品 把商品的二级分类和传入的路由参数做对比来渲染
            filteredGoods = data.goodsList.filter(item => item.category2Id == searchParams.category2Id);
        } else if (searchParams.category1Id) {
            //1.先过滤出符合一级分类的商品 把商品的一级分类和传入的路由参数做对比来渲染
            filteredGoods = data.goodsList.filter(item => item.category1Id == searchParams.category1Id);
        } else {
            filteredGoods = data.goodsList; // 无分类ID时展示所有
        }

        // 关键词搜索过滤（匹配标题、品牌名、分类名）
        if (searchParams.keyword) {
            const keyword = searchParams.keyword.toLowerCase()
            filteredGoods = data.goodsList.filter(item => {
                return (
                    item.title?.toLowerCase().includes(keyword) ||
                    item.tmName?.toLowerCase().includes(keyword) ||
                    item.category1Name?.toLowerCase().includes(keyword) ||
                    item.category2Name?.toLowerCase().includes(keyword) ||
                    item.category3Name?.toLowerCase().includes(keyword)
                )
            })
        }

        // 品牌过滤（格式如：2:华为，取冒号后的值进行比对）
        if (searchParams.trademark) {
            const trademarkName = searchParams.trademark.split(':')[1]
            filteredGoods = data.goodsList.filter(item => item.tmName === trademarkName)
        }

        // 属性过滤（格式如：[7:64GB:存储容量]）
        if (searchParams.props) {
            if (searchParams.props.length > 0) {
                // 将现有的 filteredGoods 转换格式
                const convertedGoods = filteredGoods.map(item => ({
                    ...item,
                    attrsFormatted: (item.attrs || []).map(attr =>
                        `[${attr.attrId}:${attr.attrValue}:${attr.attrName}]`
                    )
                }));

                // 在现有基础上过滤
                const filteredList = convertedGoods.filter(item =>
                    item.attrsFormatted.some(attr =>
                        searchParams.props.some(prop => prop === attr)
                    )
                );

                // 还原 attrs 原始格式
                filteredGoods = filteredList.map(item => {
                    return {
                        ...item,
                        attrs: item.attrs // 还原为原始 attrs
                    }
                });
            }
        }

        // 提取品牌 ID 列表，用于过滤商标列表
        const tmIdSet = new Set(filteredGoods.map(item => item.tmId))
        const filteredTrademark = data.trademarkList.filter(item => tmIdSet.has(item.tmId))
        //按手机价格的升序或降序排列
       if (searchParams.order && searchParams.order.includes('2:desc')) {
    // 降序
    filteredGoods = filteredGoods.slice().sort((a, b) => b.price - a.price)
} else if (searchParams.order && searchParams.order.includes('2:asc')) {
    // 升序
    filteredGoods = filteredGoods.slice().sort((a, b) => a.price - b.price)
}


// 分页处理（关键修复点）
  const startIndex = (searchParams.pageNo - 1) * searchParams.pageSize
  const endIndex = searchParams.pageNo * searchParams.pageSize
  const pagedGoods = filteredGoods.slice(startIndex, endIndex)
        // 构建最终结果数据对象
        const filteredTotal = filteredGoods.length
        const finalData = {
            ...data,
            goodsList: pagedGoods,
            trademarkList: filteredTrademark,
            total: filteredTotal,
            pageSize:searchParams.pageSize,
            pageNo:searchParams.pageNo
        }

        // 提交到 store
        context.commit('updateSearchList', finalData)
    }

}
const getters = {
    attrsList(state) {
        return state.searchList.attrsList || []
    },
    goodsList(state) {
        return state.searchList.goodsList || []
    },
    trademarkList(state) {
        return state.searchList.trademarkList || []
    }
}
export default {
    namespaced: true,
    state,
    mutations,
    actions,
    getters
}